1. Field of the Invention
The present invention relates generally to an input/output (I/O) device control method adaptable for use in a virtual computer system. More particularly but not exclusively, this invention relates to the fault processing or handling of a physical I/O device which is used in common or “shared” as logical I/O devices on a plurality of virtual computers.
2. Description of Related Art
The shared use of a physical I/O device in a virtual computer system is achievable in such a way that a hypervisor is employed to divide for shared use the physical I/O device into several logical I/O devices, wherein control is provided to assign the right of execution to a virtual computer which has an adequate device driver that controls the I/O device. In ordinary I/O operations, a register of logical I/O device is allocated to the physical I/O device while using as an I/O data region a logical memory space on each virtual computer using its own logical I/O device whereby a logical separation-capable scheme is utilizable. However, in fault recovery processing of I/O device upon occurrence of a hardware (H/W) failure, it becomes inevitable to perform a control operation by a specific device driver corresponding to such the I/O device. In this case, if an attempt is made to simply perform the fault recovery processing based on the I/O device driver control available on the virtual computer, unwanted task collision can take place because of the fact that all the virtual computers which are presently using the shared I/O device behave to execute the fault recovery processing at a time. To avoid this risk, the hypervisor is designed to perform the processing tasks that have been executed by the device driver in the prior art, including but not limited to I/O halt relative to all the I/O device-sharing virtual computers, fault recovery processing for I/O adapter, and I/O restarting with respect to every I/O device-sharing virtual computer, thereby making it possible to provide the shared I/O device for the virtual computers without suffering from any possible contractions. An exemplary technique concerning the I/O device sharing architecture for virtual computers is disclosed in JP-A-2006-85543.
However, designing the hypervisor to have therein the device control sequence is technically equivalent to transplanting one function of the device driver corresponding to such I/O device within the hypervisor. This approach further requires proper adaptation to the current versions of device driver, firmware and hardware of the I/O device. This in turn makes it necessary for the hypervisor to keep track of the functionality, once at a time, whenever a new version of I/O device is developed. This would result in the lack of the transparency of the physical I/O device and the device driver on virtual computer in the virtual computer system, which leads to an appreciable decrease in efficiency of hypervisor development. Further, in view of the fact that the fault recovery processing is performed by the hypervisor which is expected to control all of the virtual computers involved, the above-stated approach is encountered with the risk as to a significant decrease in processing performance with respect to a virtual computer which does not presently use the shared I/O device.
When using the shared physical I/O device by more than two virtual computers, a need is felt to perform, in I/O device virtualization control, arbitration control for controlling the physical I/O device with an adapter driver, which is the on-virtual-computer device driver accessible from a plurality of ones in the course of the physical I/O device fault recovery processing. Thus, overhead of the I/O device virtualization control poses a serious bar to establishment of the shared use.